from sh import sed
import os


def listDirRelative(dir):
    listOfFiles = os.listdir(dir)
    for n in range(0, len(listOfFiles)):
        listOfFiles[n] = dir + '/' + listOfFiles[n]
    
    return listOfFiles


filenameList = listDirRelative("src") + listDirRelative("src/battle") + listDirRelative("src/field") + listDirRelative("asm") + listDirRelative("asm/battle") + listDirRelative("asm/field") + listDirRelative("include") + listDirRelative("include/constants") + ['rom.ld']

wordsToBeReplaced = [
    "ID_PARA_personal_rnd",
    "ID_PARA_pp_fast_mode",
    "ID_PARA_ppp_fast_mode",
    "ID_PARA_fusei_tamago_flag",
    "ID_PARA_checksum",
    "ID_PARA_monsno_egg", # moved up here because otherwise below would be caught first
    "ID_PARA_monsno",
    "ID_PARA_item",
    "ID_PARA_id_no",
    "ID_PARA_exp",
    "ID_PARA_friend",
    "ID_PARA_speabino",
    "ID_PARA_mark",
    "ID_PARA_country_code",
    "ID_PARA_hp_exp",
    "ID_PARA_pow_exp",
    "ID_PARA_def_exp",
    "ID_PARA_agi_exp",
    "ID_PARA_spepow_exp",
    "ID_PARA_spedef_exp",
    "ID_PARA_stylemedal_normal",
    "ID_PARA_stylemedal_super",
    "ID_PARA_stylemedal_hyper",
    "ID_PARA_stylemedal_master",
    "ID_PARA_beautifulmedal_normal",
    "ID_PARA_beautifulmedal_super",
    "ID_PARA_beautifulmedal_hyper",
    "ID_PARA_beautifulmedal_master",
    "ID_PARA_cutemedal_normal",
    "ID_PARA_cutemedal_super",
    "ID_PARA_cutemedal_hyper",
    "ID_PARA_cutemedal_master",
    "ID_PARA_clevermedal_normal",
    "ID_PARA_clevermedal_super",
    "ID_PARA_clevermedal_hyper",
    "ID_PARA_clevermedal_master",
    "ID_PARA_strongmedal_normal",
    "ID_PARA_strongmedal_super",
    "ID_PARA_strongmedal_hyper",
    "ID_PARA_strongmedal_master",
    "ID_PARA_style",
    "ID_PARA_beautiful",
    "ID_PARA_cute",
    "ID_PARA_clever",
    "ID_PARA_strong",
    "ID_PARA_fur",
    "ID_PARA_sinou_champ_ribbon",
    "ID_PARA_sinou_battle_tower_ttwin_first",
    "ID_PARA_sinou_battle_tower_ttwin_second",
    "ID_PARA_sinou_battle_tower_2vs2_win50",
    "ID_PARA_sinou_battle_tower_aimulti_win50",
    "ID_PARA_sinou_battle_tower_siomulti_win50",
    "ID_PARA_sinou_battle_tower_wifi_rank5",
    "ID_PARA_sinou_syakki_ribbon",
    "ID_PARA_sinou_dokki_ribbon",
    "ID_PARA_sinou_syonbo_ribbon",
    "ID_PARA_sinou_ukka_ribbon",
    "ID_PARA_sinou_sukki_ribbon",
    "ID_PARA_sinou_gussu_ribbon",
    "ID_PARA_sinou_nikko_ribbon",
    "ID_PARA_sinou_gorgeous_ribbon",
    "ID_PARA_sinou_royal_ribbon",
    "ID_PARA_sinou_gorgeousroyal_ribbon",
    "ID_PARA_sinou_ashiato_ribbon",
    "ID_PARA_sinou_record_ribbon",
    "ID_PARA_sinou_history_ribbon",
    "ID_PARA_sinou_legend_ribbon",
    "ID_PARA_sinou_red_ribbon",
    "ID_PARA_sinou_green_ribbon",
    "ID_PARA_sinou_blue_ribbon",
    "ID_PARA_sinou_festival_ribbon",
    "ID_PARA_sinou_carnival_ribbon",
    "ID_PARA_sinou_classic_ribbon",
    "ID_PARA_sinou_premiere_ribbon",
    "ID_PARA_sinou_amari_ribbon",
    "ID_PARA_waza1",
    "ID_PARA_waza2",
    "ID_PARA_waza3",
    "ID_PARA_waza4",
    "ID_PARA_pp1",
    "ID_PARA_pp2",
    "ID_PARA_pp3",
    "ID_PARA_pp4",
    "ID_PARA_pp_count1",
    "ID_PARA_pp_count2",
    "ID_PARA_pp_count3",
    "ID_PARA_pp_count4",
    "ID_PARA_pp_max1",
    "ID_PARA_pp_max2",
    "ID_PARA_pp_max3",
    "ID_PARA_pp_max4",
    "ID_PARA_hp_rnd",
    "ID_PARA_pow_rnd",
    "ID_PARA_def_rnd",
    "ID_PARA_agi_rnd",
    "ID_PARA_spepow_rnd",
    "ID_PARA_spedef_rnd",
    "ID_PARA_tamago_flag",
    "ID_PARA_nickname_flag",
    "ID_PARA_champ_ribbon",
    "ID_PARA_winning_ribbon",
    "ID_PARA_victory_ribbon",
    "ID_PARA_bromide_ribbon",
    "ID_PARA_ganba_ribbon",
    "ID_PARA_marine_ribbon",
    "ID_PARA_land_ribbon",
    "ID_PARA_sky_ribbon",
    "ID_PARA_country_ribbon",
    "ID_PARA_national_ribbon",
    "ID_PARA_earth_ribbon",
    "ID_PARA_world_ribbon",
    "ID_PARA_event_get_flag",
    "ID_PARA_sex",
    "ID_PARA_form_no",
    "ID_PARA_dummy_p2_1",
    "ID_PARA_dummy_p2_2",
    "ID_PARA_new_get_place",
    "ID_PARA_new_birth_place",
    "ID_PARA_nickname_code_flag", # moved up here else below is caught first
    "ID_PARA_nickname_buf_flag",
    "ID_PARA_nickname_buf",
    "ID_PARA_nickname",
    "ID_PARA_pref_code",
    "ID_PARA_get_cassette",
    "ID_PARA_trial_stylemedal_normal",
    "ID_PARA_trial_stylemedal_super",
    "ID_PARA_trial_stylemedal_hyper",
    "ID_PARA_trial_stylemedal_master",
    "ID_PARA_trial_beautifulmedal_normal",
    "ID_PARA_trial_beautifulmedal_super",
    "ID_PARA_trial_beautifulmedal_hyper",
    "ID_PARA_trial_beautifulmedal_master",
    "ID_PARA_trial_cutemedal_normal",
    "ID_PARA_trial_cutemedal_super",
    "ID_PARA_trial_cutemedal_hyper",
    "ID_PARA_trial_cutemedal_master",
    "ID_PARA_trial_clevermedal_normal",
    "ID_PARA_trial_clevermedal_super",
    "ID_PARA_trial_clevermedal_hyper",
    "ID_PARA_trial_clevermedal_master",
    "ID_PARA_trial_strongmedal_normal",
    "ID_PARA_trial_strongmedal_super",
    "ID_PARA_trial_strongmedal_hyper",
    "ID_PARA_trial_strongmedal_master",
    "ID_PARA_amari_ribbon",
    "ID_PARA_oyaname_buf", # moved up here else below is caught first
    "ID_PARA_oyaname",
    "ID_PARA_get_year",
    "ID_PARA_get_month",
    "ID_PARA_get_day",
    "ID_PARA_birth_year",
    "ID_PARA_birth_month",
    "ID_PARA_birth_day",
    "ID_PARA_get_place",
    "ID_PARA_birth_place",
    "ID_PARA_pokerus",
    "ID_PARA_get_ball",
    "ID_PARA_get_level",
    "ID_PARA_oyasex",
    "ID_PARA_get_ground_id",
    "ID_PARA_dummy_p4_1",
    "ID_PARA_condition",
    "ID_PARA_level",
    "ID_PARA_cb_id",
    "ID_PARA_hpmax", # moved up here else below is caught first
    "ID_PARA_hp",
    "ID_PARA_power_rnd", # moved up here else below is caught first
    "ID_PARA_pow",
    "ID_PARA_default_name",
    "ID_PARA_def",
    "ID_PARA_agi",
    "ID_PARA_spepow",
    "ID_PARA_spedef",
    "ID_PARA_mail_data",
    "ID_PARA_cb_core",
    "ID_PARA_poke_exist",
    "ID_PARA_tamago_exist",
    "ID_PARA_nidoran_nickname",
    "ID_PARA_type1",
    "ID_PARA_type2",
    "ID_PARA_end",
]

wordsToReplaceWith = [
    "MON_DATA_PERSONALITY",
    "MON_DATA_PARTY_LOCK",
    "MON_DATA_BOX_LOCK",
    "MON_DATA_CHECKSUM_FAILED",
    "MON_DATA_CHECKSUM",
    "MON_DATA_SPECIES_OR_EGG", # moved up here because otherwise below would be caught first
    "MON_DATA_SPECIES",
    "MON_DATA_HELD_ITEM",
    "MON_DATA_OTID",
    "MON_DATA_EXPERIENCE",
    "MON_DATA_FRIENDSHIP",
    "MON_DATA_ABILITY",
    "MON_DATA_MARKINGS",
    "MON_DATA_GAME_LANGUAGE",
    "MON_DATA_HP_EV",
    "MON_DATA_ATK_EV",
    "MON_DATA_DEF_EV",
    "MON_DATA_SPEED_EV",
    "MON_DATA_SPATK_EV",
    "MON_DATA_SPDEF_EV",
    "MON_DATA_HOENN_COOL_RIBBON",
    "MON_DATA_HOENN_COOL_RIBBON_SUPER",
    "MON_DATA_HOENN_COOL_RIBBON_HYPER",
    "MON_DATA_HOENN_COOL_RIBBON_MASTER",
    "MON_DATA_HOENN_BEAUTY_RIBBON",
    "MON_DATA_HOENN_BEAUTY_RIBBON_SUPER",
    "MON_DATA_HOENN_BEAUTY_RIBBON_HYPER",
    "MON_DATA_HOENN_BEAUTY_RIBBON_MASTER",
    "MON_DATA_HOENN_CUTE_RIBBON",
    "MON_DATA_HOENN_CUTE_RIBBON_SUPER",
    "MON_DATA_HOENN_CUTE_RIBBON_HYPER",
    "MON_DATA_HOENN_CUTE_RIBBON_MASTER",
    "MON_DATA_HOENN_SMART_RIBBON",
    "MON_DATA_HOENN_SMART_RIBBON_SUPER",
    "MON_DATA_HOENN_SMART_RIBBON_HYPER",
    "MON_DATA_HOENN_SMART_RIBBON_MASTER",
    "MON_DATA_HOENN_TOUGH_RIBBON",
    "MON_DATA_HOENN_TOUGH_RIBBON_SUPER",
    "MON_DATA_HOENN_TOUGH_RIBBON_HYPER",
    "MON_DATA_HOENN_TOUGH_RIBBON_MASTER",
    "MON_DATA_COOL",
    "MON_DATA_BEAUTY",
    "MON_DATA_CUTE",
    "MON_DATA_SMART",
    "MON_DATA_TOUGH",
    "MON_DATA_SHEEN",
    "MON_DATA_SINNOH_CHAMP_RIBBON",
    "MON_DATA_ABILITY_RIBBON",
    "MON_DATA_GREAT_ABILITY_RIBBON",
    "MON_DATA_DOUBLE_ABILITY_RIBBON",
    "MON_DATA_MULTI_ABILITY_RIBBON",
    "MON_DATA_PAIR_ABILITY_RIBBON",
    "MON_DATA_WORLD_ABILITY_RIBBON",
    "MON_DATA_ALERT_RIBBON",
    "MON_DATA_SHOCK_RIBBON",
    "MON_DATA_DOWNCAST_RIBBON",
    "MON_DATA_CARELESS_RIBBON",
    "MON_DATA_RELAX_RIBBON",
    "MON_DATA_SNOOZE_RIBBON",
    "MON_DATA_SMILE_RIBBON",
    "MON_DATA_GORGEOUS_RIBBON",
    "MON_DATA_ROYAL_RIBBON",
    "MON_DATA_GORGEOUS_ROYAL_RIBBON",
    "MON_DATA_FOOTPRINT_RIBBON",
    "MON_DATA_RECORD_RIBBON",
    "MON_DATA_HISTORY_RIBBON",
    "MON_DATA_LEGEND_RIBBON",
    "MON_DATA_RED_RIBBON",
    "MON_DATA_GREEN_RIBBON",
    "MON_DATA_BLUE_RIBBON",
    "MON_DATA_FESTIVAL_RIBBON",
    "MON_DATA_CARNIVAL_RIBBON",
    "MON_DATA_CLASSIC_RIBBON",
    "MON_DATA_PREMIER_RIBBON",
    "MON_DATA_SINNOH_RIBBON_53",
    "MON_DATA_MOVE1",
    "MON_DATA_MOVE2",
    "MON_DATA_MOVE3",
    "MON_DATA_MOVE4",
    "MON_DATA_MOVE1PP",
    "MON_DATA_MOVE2PP",
    "MON_DATA_MOVE3PP",
    "MON_DATA_MOVE4PP",
    "MON_DATA_MOVE1PPUP",
    "MON_DATA_MOVE2PPUP",
    "MON_DATA_MOVE3PPUP",
    "MON_DATA_MOVE4PPUP",
    "MON_DATA_MOVE1MAXPP",
    "MON_DATA_MOVE2MAXPP",
    "MON_DATA_MOVE3MAXPP",
    "MON_DATA_MOVE4MAXPP",
    "MON_DATA_HP_IV",
    "MON_DATA_ATK_IV",
    "MON_DATA_DEF_IV",
    "MON_DATA_SPEED_IV",
    "MON_DATA_SPATK_IV",
    "MON_DATA_SPDEF_IV",
    "MON_DATA_IS_EGG",
    "MON_DATA_HAS_NICKNAME",
    "MON_DATA_HOENN_CHAMPION_RIBBON",
    "MON_DATA_HOENN_WINNING_RIBBON",
    "MON_DATA_HOENN_VICTORY_RIBBON",
    "MON_DATA_HOENN_ARTIST_RIBBON",
    "MON_DATA_HOENN_EFFORT_RIBBON",
    "MON_DATA_HOENN_MARINE_RIBBON",
    "MON_DATA_HOENN_LAND_RIBBON",
    "MON_DATA_HOENN_SKY_RIBBON",
    "MON_DATA_HOENN_COUNTRY_RIBBON",
    "MON_DATA_HOENN_NATIONAL_RIBBON",
    "MON_DATA_HOENN_EARTH_RIBBON",
    "MON_DATA_HOENN_WORLD_RIBBON",
    "MON_DATA_FATEFUL_ENCOUNTER",
    "MON_DATA_GENDER",
    "MON_DATA_FORM",
    "MON_DATA_RESERVED_113",
    "MON_DATA_RESERVED_114",
    "MON_DATA_HGSS_EGG_MET_LOCATION",
    "MON_DATA_HGSS_MET_LOCATION",
    "MON_DATA_NICKNAME_2", # moved up here else below is caught first
    "MON_DATA_NICKNAME_4",
    "MON_DATA_NICKNAME_3",
    "MON_DATA_NICKNAME",
    "MON_DATA_UNK_121",
    "MON_DATA_GAME_VERSION",
    "MON_DATA_COOL_RIBBON",
    "MON_DATA_COOL_RIBBON_GREAT",
    "MON_DATA_COOL_RIBBON_ULTRA",
    "MON_DATA_COOL_RIBBON_MASTER",
    "MON_DATA_BEAUTY_RIBBON",
    "MON_DATA_BEAUTY_RIBBON_GREAT",
    "MON_DATA_BEAUTY_RIBBON_ULTRA",
    "MON_DATA_BEAUTY_RIBBON_MASTER",
    "MON_DATA_CUTE_RIBBON",
    "MON_DATA_CUTE_RIBBON_GREAT",
    "MON_DATA_CUTE_RIBBON_ULTRA",
    "MON_DATA_CUTE_RIBBON_MASTER",
    "MON_DATA_SMART_RIBBON",
    "MON_DATA_SMART_RIBBON_GREAT",
    "MON_DATA_SMART_RIBBON_ULTRA",
    "MON_DATA_SMART_RIBBON_MASTER",
    "MON_DATA_TOUGH_RIBBON",
    "MON_DATA_TOUGH_RIBBON_GREAT",
    "MON_DATA_TOUGH_RIBBON_ULTRA",
    "MON_DATA_TOUGH_RIBBON_MASTER",
    "MON_DATA_SINNOH_RIBBON_143",
    "MON_DATA_OT_NAME_2", # moved up here else below is caught first
    "MON_DATA_OT_NAME",
    "MON_DATA_EGG_MET_YEAR",
    "MON_DATA_EGG_MET_MONTH",
    "MON_DATA_EGG_MET_DAY",
    "MON_DATA_MET_YEAR",
    "MON_DATA_MET_MONTH",
    "MON_DATA_MET_DAY",
    "MON_DATA_EGG_MET_LOCATION",
    "MON_DATA_MET_LOCATION",
    "MON_DATA_POKERUS",
    "MON_DATA_POKEBALL",
    "MON_DATA_MET_LEVEL",
    "MON_DATA_MET_GENDER",
    "MON_DATA_ENCOUNTER_TYPE",
    "MON_DATA_RESERVED_159",
    "MON_DATA_STATUS",
    "MON_DATA_LEVEL",
    "MON_DATA_CAPSULE",
    "MON_DATA_MAXHP", # moved up here else below is caught first
    "MON_DATA_HP",
    "MON_DATA_IVS_WORD", # moved up here else below is caught first
    "MON_DATA_ATTACK",
    "MON_DATA_SPECIES_NAME",
    "MON_DATA_DEFENSE",
    "MON_DATA_SPEED",
    "MON_DATA_SPECIAL_ATTACK",
    "MON_DATA_SPECIAL_DEFENSE",
    "MON_DATA_MAIL_STRUCT",
    "MON_DATA_SEAL_COORDS",
    "MON_DATA_SPECIES_EXISTS",
    "MON_DATA_SANITY_IS_EGG",
    "MON_DATA_UNK_176",
    "MON_DATA_TYPE_1",
    "MON_DATA_TYPE_2",
    "MON_DATA_END",
]

for filename in filenameList:
    for entry in range(0, len(wordsToBeReplaced)):
        if '.c' in filename or '.h' in filename or '.s' in filename or '.ld' in filename:
            sed(['-i', 's#' + wordsToBeReplaced[entry] + '#' + wordsToReplaceWith[entry] + '#g', filename])
